The present invention relates generally to branch prediction in a computer processor, and more specifically, to fingerprint-based branch prediction.
Branch prediction is used in computer processors to improve performance of execution of computer programs. In branch prediction, the direction of a branch instruction is predicted before the branch is resolved, such that execution of the computer program that includes the branch instruction may continue speculatively without waiting for the branch resolution. There are many branch prediction schemes for predicting the outcome of a branch instruction. Branch prediction may be performed based on the history of the resolution of the previous instances of a branch instruction. For example, the branch history may be given by a sequence of 1's and 0's corresponding to the most-recent executions of the branch instruction, where a 0 indicates that the branch was not taken and a 1 indicates that the branch was taken.